package cn.lutu.domain.service;

import cn.lutu.protocol.dto.AdminSelectUserDTO;
import cn.lutu.protocol.dto.AuthorityUpdateDTO;
import cn.lutu.protocol.dto.RoleAddDTO;
import cn.lutu.protocol.dto.RoleUpdateInfoDTO;
import cn.lutu.protocol.vo.AuthorityVO;
import cn.lutu.protocol.vo.RoleVO;
import cn.lutu.protocol.vo.adminVO.*;

import java.util.List;

public interface AdminService {
    List<AdminUserListVO> selectUserList();
    List<AdminRoleListVO> roleList();
    List<AdminSpotVO> spotList();
    List<AuthorityUpdateVO> authorityList();
    List<AdminUserListVO> userListBy(AdminSelectUserDTO adminSelectUserDTO);
    /*管理员根据用户名查询用户详情*/
    UserDetailVO getUserInfoByUsername(String userName);
    /*管理员根据id删除角色数据*/
    void deleteById(Long id);
    /*管理员根据id删除角色数据*/
    void deleteAuthorityById(Long id);
    /**
     * 修改角色
     *
     * @param roleUpdateInfoDTO 封装了被修改数据的ID和新数据的对象
     */
    void updateInfoById(RoleUpdateInfoDTO roleUpdateInfoDTO);

    void updateAuthorityById(AuthorityUpdateDTO authorityUpdateDTO);

    RoleUpdateInfoVO getInfoById(Long id);

    AuthorityUpdateVO getAuthority(Long id);

    AdminSpotVO getSpotById(Long id);

    void addNewRole(RoleAddDTO roleAddDTO);

    void addNewAuthority(Long roleId,Long authorityId);

    List<AuthorityVO> authList();
}
